package com.itcast.rabbitmq.routing;

import com.itcast.rabbitmq.util.ConnectionUtil;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

/**
 * rabbitmq路由模式生产者,发送消息
 */
public class Producer {

    //交换机名称
    static final String ROUTING_EXCHANGE = "routing_exchange";


    public static void main(String[] args) throws Exception {
        //创建连接
        Connection connection = ConnectionUtil.getConnection();

        //创建管道(频道)
        Channel channel = connection.createChannel();
        //声明交换机；参数1：交换机名称，参数2：交换机类型（fanout,direct,topic）
        channel.exchangeDeclare(ROUTING_EXCHANGE, BuiltinExchangeType.DIRECT);


        //需要发送的消息
        String message = "你好,天才! 路由模式insert-----";
        /**
         * 参数1：交换机名称；如果没有则指定空字符串（表示使用默认的交换机）
         * 参数2：路由key，简单模式中可以使用队列名称
         * 参数3：消息其它属性
         * 参数4：消息内容
         */
        channel.basicPublish(ROUTING_EXCHANGE, "insert", null, message.getBytes());
        System.out.println("已经发送消息:" + message);

        //需要发送的消息
        message = "你好,天才! 路由模式update-----";
        /**
         * 参数1：交换机名称；如果没有则指定空字符串（表示使用默认的交换机）
         * 参数2：路由key，简单模式中可以使用队列名称
         * 参数3：消息其它属性
         * 参数4：消息内容
         */
        channel.basicPublish(ROUTING_EXCHANGE, "update", null, message.getBytes());
        System.out.println("已经发送消息:" + message);

        //关闭资源
        channel.close();
        connection.close();
    }
}
